package com.mmy.controller.permissionmenu;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.mmy.domain.permissionmenu.TConstMenu;
import com.mmy.domain.permissionmenu.TConstRole;
import com.mmy.domain.permissionmenu.VConstRoleMenu;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.permissionmenu.impl.MenuServiceImpl;
import com.mmy.service.permissionmenu.impl.PermissionMenuServiceImpl;
import com.mmy.service.permissionmenu.impl.PermissionServiceImpl;

/**
 * 类的介绍：角色菜单
 *
 * @author shangzl
 * @date 创建日期：2020-07-13
 * @version 1.0
 */

@Controller
public class PermissionMenuController {

	@Autowired
	PermissionMenuServiceImpl permissionMenuServiceImpl;
	@Autowired
	PermissionServiceImpl permissionServiceImpl;
	@Autowired
	MenuServiceImpl menuServiceImpl;

	/**
	 * 函数功能说明： 跳转到对应角色菜单页面
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-13
	 */

	@RequestMapping(value = "/permissionmenu")
	public String toPermissionMenu(HttpServletRequest request, Model model) {
		try {

//			 查找角色所有菜单

			int iRoleID = Integer.parseInt(request.getParameter("iRoleID"));
			List<VConstRoleMenu> lstConstRoleMenu = permissionMenuServiceImpl.findByRoleID(iRoleID);
			if (lstConstRoleMenu.size() == 0) {
				TConstRole tConstRole = permissionServiceImpl.findByRoleID(iRoleID);
				model.addAttribute("tConstRole", tConstRole);
			} else {
				model.addAttribute("lstConstRoleMenu", lstConstRoleMenu);
			}

			return "webbackground/permission-menu/PermissionMenu";
		} catch (Exception e) {

		}
		return null;

	}
// TODO delete
//	/**
//	 * 函数功能说明： 跳转新建角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 jsp页面
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-07-13
//	 */
//
//	@RequestMapping(value = "/createpermissionmenu")
//	public String toCreatePermissionMenu(Model model) {
////		查找所有菜单
//		List<TConstMenu> lstConstMenu = menuServiceImpl.findAllMenu();
//		model.addAttribute("lstConstMenu", lstConstMenu);
//
////		查找未添加的角色
//		List<TConstRole> lstConstRole = permissionServiceImpl.findRoleNotInID();
//		model.addAttribute("lstConstRole", lstConstRole);
//		return "webbackground/permission-menu/CreatePermissionMenu";
//	}
//TODO delete
//	/**
//	 * 函数功能说明： 新建角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 jsp页面
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-07-13
//	 */
//
//	@PostMapping("/savecreatepermissionmenu")
//	@ResponseBody
//	public String createPermissionMenu(String checkListRoleID, String checkListMenuID, HttpSession session)
//			throws Exception {
//		TSysUser tSysUser = (TSysUser) session.getAttribute("tSysUser");
//
//		try {
//
//			permissionMenuServiceImpl.saveAll(
//					permissionMenuServiceImpl.createPermissionMenu(checkListRoleID, checkListMenuID, tSysUser));
//
//		} catch (Exception e) {
//
//		}
//		return null;
//	}
//TODO delete
//	/**
//	 * 函数功能说明： 删除角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 jsp页面
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-07-28
//	 */
//
//	@PostMapping("/delpermissionmenu")
//	@ResponseBody
//	public String delPermissionMenu(String checkList) {
//
////		 用，隔分 
//		String[] arrRoleID = checkList.split(",");
//		List<Integer> lstRoleID = new ArrayList<>();
//
////		把数组添加到list
//		for (String str : arrRoleID) {
//			lstRoleID.add(Integer.parseInt(str));
//		}
//
//		permissionMenuServiceImpl.delPermissionMenu(lstRoleID);
//
//		return "webbackground/permission-menu/PermissionMenu";
//	}

	/**
	 * 函数功能说明： 跳转编辑角色菜单
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-13
	 */

	@RequestMapping(value = "/toupdatepermissionmenu")
	public String toUpdatePermissionMenu(HttpServletRequest request, Model model) {

		int iRoleID = Integer.parseInt(request.getParameter("iRoleID"));

//		通过角色编码找到对应菜单
		List<VConstRoleMenu> lstConstRoleMenu = permissionMenuServiceImpl.findByRoleID(iRoleID);


		if (lstConstRoleMenu.size() == 0) {
			List<TConstMenu> lstConstMenu = menuServiceImpl.findAllMenu();
			model.addAttribute("lstConstMenu", lstConstMenu);
			TConstRole tConstRole = permissionServiceImpl.findByRoleID(iRoleID);
			model.addAttribute("tConstRole", tConstRole);
			return "webbackground/permission-menu/UpdatePermissionMenu";
		}

//		查找不包含已有id的菜单

		List<TConstMenu> lstConstMenu = menuServiceImpl.findMenuNotInID(iRoleID);


//		通过角色编码找到对象
		TConstRole tConstRole = permissionServiceImpl.findByRoleID(iRoleID);

		model.addAttribute("lstConstRoleMenu", lstConstRoleMenu);
		model.addAttribute("lstConstMenu", lstConstMenu);
		model.addAttribute("tConstRole", tConstRole);
		return "webbackground/permission-menu/UpdatePermissionMenu";

	}

	/**
	 * 函数功能说明： 编辑角色菜单
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-13
	 */
	@PostMapping("/updatepermissionmenu")
	@ResponseBody
	public String updatePermissionMenu(String checkList, HttpServletRequest request, HttpSession session)
			throws Exception {

		int iRoleID = Integer.parseInt(request.getParameter("iRoleID"));
		TSysUser tSysUser = (TSysUser) session.getAttribute("tSysUser");

		permissionMenuServiceImpl.delRoleMenuByRoleID(iRoleID);

		try {

			permissionMenuServiceImpl
					.saveAll(permissionMenuServiceImpl.updatePermissionMenu(checkList, tSysUser, iRoleID));

		} catch (Exception e) {

		}
		return null;
	}
//TODO delete
//	/**
//	 * 函数功能说明： 查询角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 jsp页面
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-07-13
//	 */
//	@RequestMapping(value = "/querypermissionmenu")
//	public String queryPermissionMenu(Model model, HttpServletRequest request) {
//
////		查找所有角色编码
//		List<Integer> lstRoleID = permissionMenuServiceImpl.findRoleID();
//
//		String strRoleName = request.getParameter("RoleName");
//
//		if (strRoleName == "") {
////			查找已添加的角色
//			List<TConstRole> lstConstRole = new ArrayList<>();
//			for (Integer iRoleID : lstRoleID) {
//				TConstRole tConstRole = new TConstRole();
//				tConstRole = permissionServiceImpl.findByRoleID(iRoleID);
//				lstConstRole.add(tConstRole);
//			}
//			model.addAttribute("lstConstRole", lstConstRole);
//			request.setAttribute("strRoleName", strRoleName);
//			return "webbackground/permission-menu/PermissionMenu";
//		} else {
//			List<TConstRole> lstConstRole = permissionServiceImpl.findByRoleName(strRoleName);
//			model.addAttribute("lstConstRole", lstConstRole);
//			request.setAttribute("strRoleName", strRoleName);
//			return "webbackground/permission-menu/PermissionMenu";
//		}
//
//	}
}
